// Copyright (c) 2007 Robin Boerdijk. All rights reserved.
//
// This software is licensed under the terms of the Microsoft Reciprocal License as described 
// in the file LICENSE.txt, which you should have received as part of this distribution. The 
// license terms are also available at http://www.opensource.org/licenses/ms-rl.html.

#ifndef wtk_WindowClass_h_included
#define wtk_WindowClass_h_included

#include <windows.h>
#include <iostream>

namespace wtk
{
	class WindowClass
	{
	public:

		WindowClass(HINSTANCE instance, LPCWSTR className);

		LPCWSTR ClassName() const { return m_info.lpszClassName; }

	private:

		WNDCLASSEXW m_info;

	public:

		static WindowClass Button;
		static WindowClass ComboBox;
		static WindowClass Edit;
		static WindowClass ListBox;
		static WindowClass MDIClient;
		static WindowClass ScrollBar;
		static WindowClass Static;

		static const wchar_t * WindowClass::AtomToClassName(ATOM atom);
	};

	std::ostream &operator<<(std::ostream &out, const WindowClass &wc);
}

#endif